package Day006_综合案例;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class Utils {
    //工具类

    // ID设为静态成员变量
    public static int SID = 0; //学生ID
    public static int TID = 0; //教师ID

    //一. 定义方法:需要把生日yyyy-MM-dd转换为年龄age

    //用户输入yyyy-MM-dd字符串
    //字符串转换为Date
    //提取Date里的年 月 日
    //今年2020-年 , 月份日子和今天比较 是否过生日,过生日年龄为2020-年,没过生日年龄为2020-年-1

    public static int getAge(String birthday) { //生日的字符串作为参数
        //1.创建生日日期格式对象
        Date birthdayDate = null;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        //----------
        try {
            birthdayDate = sdf.parse(birthday); //字符串转换为Date
        } catch (ParseException e) {
            e.printStackTrace();
        }
        //----------
        //2.创建日历对象,以生日设置日历对象
        GregorianCalendar calbirthday = new GregorianCalendar();
        calbirthday.setTime(birthdayDate); //以 birthdayDate 设置时间

        int birYear = calbirthday.get(Calendar.YEAR); //获取生日年
        int birMouth = calbirthday.get(Calendar.MONTH); //获取生日月
        int birDay = calbirthday.get(Calendar.DAY_OF_MONTH); //获取生日日

        //3.创建当前系统日历对象
        GregorianCalendar cal = new GregorianCalendar();
        int nowYear = cal.get(Calendar.YEAR); //获取当前年
        int nowMouth = cal.get(Calendar.MONTH); //获取当前月
        int nowDay = cal.get(Calendar.DAY_OF_MONTH); //获取当前日

        //4.比较
        //如果生日日历对象在当前系统日历对象之后.返回-1(错误)
        if (cal.before(calbirthday)) {
            return -1;
        }

        //5.计算年龄
        int age = nowYear - birYear;
        //月份日子和今天比较 是否过生日,过生日年龄为2020-年,没过生日年龄为2020-年-1
        if (birMouth < nowMouth) {
            age--;
        }
        if (birMouth == nowMouth && birDay < nowDay) {
            age--;
        }
        return age;
    }

    //二. 定义方法:学生/老师的工作内容不一样
    public static void doWhat(Person p) {
        System.out.println(p.getID() + "\t\t" +
                p.getName() + "\t\t" +
                p.getSex() + "\t\t" +
                p.getBirthday() + "\t\t" +
                p.getAge() + "\t\t" +
                "我是一名:" + p.getType() + ",我的工作是:" + p.getWork());
    }

    //三. 定义方法:查询信息时 打印出对象全部信息内容
    public static void printList(ArrayList list) {
        System.out.println("******************************************************");
        System.out.println("id\t\tname\tsex\t\tbirthday\t\tage\t\t描述");
        //遍历集合
        for (int i = 0; i < list.size(); i++) {
            Object o = list.get(i);
            //Object类强转Person类
            if (o instanceof Person) { //是否是Person类
                Person p = (Person) o;
                //打印p对象工作内容
                Utils.doWhat(p); //调用静态方法二 doWhat
            }
        }
        System.out.println("******************************************************");
    }
}
